package com.inspur.security.cbb3.kms.utils;


import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.FastDateFormat;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * 日期工具类
 */
public class DateUtil {
    // ==格式到年月日 时分秒==
    /**
     * 日期格式，年月日时分秒，例如：20001230120000，20080808200808
     */
    public static final String DATE_TIME_FORMAT_YYYYMMDDHHMISS = "yyyyMMddHHmmss";

    /**
     * 日期格式，毫秒，例如：20001230120000111，20080808200808222
     */
    public static final String DATE_TIME_FORMAT_YYYYMMDDHHMISSSSS = "yyyyMMddHHmmssSSS";

    /**
     * 日期格式，年月日时分秒，年月日用横杠分开，时分秒用冒号分开
     * 例如：2005-05-10 23：20：00，2008-08-08 20:08:08
     */
    public static final String DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS = "yyyy-MM-dd HH:mm:ss";

    /**
     * 日期格式，年月日，用横杠分开，例如：2006-12-25，2008-08-08
     */
    public static final String DATE_FORMAT_YYYY_MM_DD = "yyyy-MM-dd";
    /* ************工具方法***************   */

    /**
     * 获取现在时间
     * @param fmtType   时间类型格式化
     * @return  返回时间类型
     */
    public static String getNowDate(String fmtType) {
        DateTimeFormatter dtf=DateTimeFormatter.ofPattern(fmtType);
        return LocalDateTime.now().format(dtf);
    }

    public static String getNowDate() {
        return getNowDate(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS);
    }

    /**
     * 获取现在时间
     *
     * @return 返回短时间字符串格式yyyy-MM-dd
     */

    public static String getStringDateShort() {
        return getNowDate(DATE_FORMAT_YYYY_MM_DD);
    }

    /**
     * 用SimpleDateFormat计算时间差(天)
     * @throws ParseException
     * @param fromDate 过去时间yyyy-MM-dd HH:mm:ss
     * @param toDate 现在时间yyyy-MM-dd HH:mm:ss
     */
    public static int calculateTimeDifferenceBySimpleDateFormat(String fromDate, String toDate) throws ParseException {
        SimpleDateFormat simpleFormat = new SimpleDateFormat(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS);
        /*天数差*/
        Date fromDate1 = simpleFormat.parse(fromDate);
        Date toDate1 = simpleFormat.parse(toDate);
        long from1 = fromDate1.getTime();
        long to1 = toDate1.getTime();
        int days = (int) ((to1 - from1) / (1000 * 60 * 60 * 24));
        return days;

//        /*小时差*/
//        Date fromDate2 = simpleFormat.parse("2018-03-01 12:00");
//        Date toDate2 = simpleFormat.parse("2018-03-12 12:00");
//        long from2 = fromDate2.getTime();
//        long to2 = toDate2.getTime();
//        int hours = (int) ((to2 - from2) / (1000 * 60 * 60));
//        System.out.println("两个时间之间的小时差为：" + hours);
//
//        /*分钟差*/
//        Date fromDate3 = simpleFormat.parse("2018-03-01 12:00");
//        Date toDate3 = simpleFormat.parse("2018-03-12 12:00");
//        long from3 = fromDate3.getTime();
//        long to3 = toDate3.getTime();
//        int minutes = (int) ((to3 - from3) / (1000 * 60));
//        System.out.println("两个时间之间的分钟差为：" + minutes);
    }


}
